package tool

import (
	"fmt"
	"os"
	"path/filepath"
)

// FindAndReadConfig 在多个路径中搜索配置文件
// 并在找到时返回文件内容
// configName: 不带扩展名的配置文件名称（例如 "conf"）
// configType: 文件扩展名（例如 "yaml"、"json"）
// configPaths: 用于搜索配置文件的路径切片
func FindAndReadConfig(configName, configType string, configPaths []string) ([]byte, string, error) {
	for _, basePath := range configPaths {
		fileName := fmt.Sprintf("%s.%s", configName, configType)
		fullPath := filepath.Join(basePath, fileName)

		// 检查文件是否存在
		_, err := os.Stat(fullPath)
		if err == nil {
			// 文件存在，读取其内容
			content, err := os.ReadFile(fullPath)
			if err == nil {
				return content, fullPath, nil
			}
		}
	}

	return nil, "", fmt.Errorf("configuration file %s.%s not found in any of the provided paths", configName, configType)
}
